package ocio.actions;


import java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import ocio.beans.Cliente;
import ocio.beans.Reserva;
import ocio.beans.Subscripcion;
import ocio.services.ClienteService;
import ocio.services.ServiceLocator;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * Clase destinataria de petición de información detallada sobre un Cliente.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Cliente
 */
public class DetalleClienteAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private int id;
	private Set<Reserva> listaReservas = new HashSet<Reserva>();
	private Set<Subscripcion> listaSubscripciones = new HashSet<Subscripcion>();
	private Cliente cliente;
	private int rol;
	private Date fechahoy;

    /**
	 * Método execute() de la clase ActionSupport de Struts 2. 
	 * Solicita los servicios para recuperar la información del cliente.
	 * @return un string que indica la respuesta de la acción ejecutada sobre la petición del usuario
	 */
	public String execute(){

		fechahoy=new Date();

		ServiceLocator serviceLocator = ServiceLocator.getServiceLocator();
		ClienteService clienteService = (ClienteService)serviceLocator.getService("Cliente");		

		cliente = (Cliente)clienteService.searchById(id);
		this.listaReservas = cliente.getReservas();
		this.listaSubscripciones=cliente.getSubscripciones();
		
		this.setRol(2);
		
		Map<String,Object> sesion = ActionContext.getContext().getSession();
		sesion.remove("IDCLIENTE"); //Por si es admin el que venía de cliente pero ahora 
		                            //está consultando este otro cliente...
		sesion.put("IDCLIENTE",cliente.getId());
		
		return "success";
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Set<Reserva> getListaReservas() {
		return listaReservas;
	}

	public void setListaReservas(Set<Reserva> listaReservas) {
		this.listaReservas = listaReservas;
	}

	public int getRol() {
		return rol;
	}

	public void setRol(int rol) {
		this.rol = rol;
	}

	public Date getFechahoy() {
		return fechahoy;
	}

	public void setFechahoy(Date fechahoy) {
		this.fechahoy = fechahoy;
	}

	public Set<Subscripcion> getListaSubscripciones() {
		return listaSubscripciones;
	}

	public void setListaSubscripciones(Set<Subscripcion> listaSubscripciones) {
		this.listaSubscripciones = listaSubscripciones;
	}
}
